<?php
/**
 * @author Cyril Gabathuler
 * @since version - 31.05.2007
 */

   require_once('frontend/modules/util/module.php');
   require_once('frontend/modules/util/Util.php');
   require_once('backend/Spiel.php');
   require_once('backend/Spieler.php');
   require_once('backend/SpielerAufstellung.php');
   require_once('backend/Form.php');
   require_once('backend/Status.php');
   require_once('backend/Bewertung.php');


 class SpielBewerten implements Module {

	private $id;
	private $failures = array();

	public function display() {

		$this->id = $_GET['id'];
		$error = false;

		if($_GET['action'] == 'save' || $_GET['action'] == 'secondStep') {
			$error = $this->checkOnError();
			if(!$error) {
				$this->insertBewertung();
				if($_GET['action'] != 'secondStep') {
					$this->setBewertet();
					Util::information("Die Bewertungen wurden erfolgreich hinzugef&uuml;gt.");
				}
			}
		}
		if($_GET['action'] == 'saveSecondStep') {
			$this->step2();
			$this->setBewertet();
			Util::information("Die Bewertungen und die Zusatzinformation wurden erfolgreich hinzugef&uuml;gt.");
		}
		if($_GET['action'] == 'secondStep' && !$error)
			include('templates/spielBewerten2.tpl');
		else
			include('templates/spielBewerten.tpl');
	}

	private function getGegnerName($id) {
		global $Manager;

		$Spiel = $Manager->getTable("Spiel")->find($id);

		return $Spiel->gegner;
	}

	private function getAufstellung($id) {
		global $Manager;
		$Query = new Doctrine_Query();
		$Allespieler = array();

		$Params = array
    	(
       	 ":spiel_id" => $id,
       	 ":ersatz" => 0
    	);

		$SpielAufstellung = $Query->select( "s.*")
			->from( "SpielerAufstellung s" )
			->where('spiel_id = :spiel_id and ersatz = :ersatz', $Params)
			->execute();
		if($SpielAufstellung->count() > 0) {
			foreach($SpielAufstellung as $aufstellung) {
				$Spieler = $Manager->getTable("Spieler")->find($aufstellung->spieler_id);
				if($Spieler->count() > 0) {
					$Allespieler[] = $Spieler;
				}
			}
		}

		if(count($Allespieler) > 0)
			return $Allespieler;
		else
			return array();
	}

	private function getErsatzAufstellung($id) {
		global $Manager;
		$Query = new Doctrine_Query();
		$Allespieler = array();

		$Params = array
    	(
       	 ":spiel_id" => $id,
       	 ":ersatz" => 1
    	);

		$SpielAufstellung = $Query->select( "s.*")
			->from( "SpielerAufstellung s" )
			->where('spiel_id = :spiel_id and ersatz = :ersatz', $Params)
			->execute();
		if($SpielAufstellung->count() > 0) {
			foreach($SpielAufstellung as $aufstellung) {
				$Spieler = $Manager->getTable("Spieler")->find($aufstellung->spieler_id);
				if($Spieler->count() > 0) {
					$Allespieler[] = $Spieler;
				}
			}
		}

		if(count($Allespieler) > 0)
			return $Allespieler;
		else
			return array();
	}

	private function getAllForm() {
		$Query = new Doctrine_Query();
		$Form = $Query->select( "f.*")
			->from( "Form f" )
			->execute();
		if($Form->count() > 0) {
			return $Form;
		}
	}

	private function getAllBewertung() {
		$Query = new Doctrine_Query();
		$Bewertung = $Query->select( "b.*")
			->from( "Bewertung b" )
			->execute();
		if($Bewertung->count() > 0) {
			return $Bewertung;
		}
	}

	private function insertBewertung() {
		$Query = new Doctrine_Query();
		//Update Stammspieler
		$this->setTore();
		foreach($this->getAufstellung($this->id) as $spieler){
			$spieldauer = "spieldauer_".$spieler->id;
			$sterne = "bewertung_".$spieler->id;
			$form = "form_".$spieler->id;

			global $Manager;

			//Update Spieler
			$UpdateSpieler = $Manager->getTable("Spieler")->find($spieler->id);

			if($_POST[$spieldauer]!='90') {
				$Verletzt = $Manager->getTable("Status")->find(3);
				$UpdateSpieler->Status = $Verletzt;
			}

			$UpdateSpieler->Form = $Manager->getTable("Form")->find($_POST[$form]);
			$UpdateSpieler->save();

			//Update SpielerAufstellung
			$Params = array
	    	(
	       	 ":spieler_id" => $spieler->id,
	       	 ":spiel_id" => $this->id
	    	);

			$SpielAufstellung = $Query->select( "s.*")
				->from( "SpielerAufstellung s" )
				->where('spiel_id = :spiel_id and spieler_id = :spieler_id', $Params)
				->execute();
			$SpielAufstellung[0]->Bewertung = $Manager->getTable("Bewertung")->find($_POST[$sterne]);
			$SpielAufstellung[0]->spieldauer = $_POST[$spieldauer];
			$SpielAufstellung[0]->save();

		}

		//Update Ersatzspieler
		foreach($this->getErsatzAufstellung($this->id) as $spieler){
			$spieldauer = "spieldauer_".$spieler->id;
			$sterne = "bewertung_".$spieler->id;
			$form = "form_".$spieler->id;

			if($_POST[$spieldauer] > '0') {
				global $Manager;

				//Update Spieler
				$UpdateSpieler = $Manager->getTable("Spieler")->find($spieler->id);
				$UpdateSpieler->Form = $Manager->getTable("Form")->find($_POST[$form]);
				$UpdateSpieler->save();

				//Update SpielerAufstellung
				$Params = array
		    	(
		       	 ":spieler_id" => $spieler->id,
		       	 ":spiel_id" => $this->id
		    	);

				$SpielAufstellung = $Query->select( "s.*")
					->from( "SpielerAufstellung s" )
					->where('spiel_id = :spiel_id and spieler_id = :spieler_id', $Params)
					->execute();
				$SpielAufstellung[0]->Bewertung = $Manager->getTable("Bewertung")->find($_POST[$sterne]);
				$SpielAufstellung[0]->spieldauer = $_POST[$spieldauer];
				$SpielAufstellung[0]->save();
			}
		}
	}

	private function step2() {
		//Update Stammspieler
		foreach($this->getAufstellung($this->id) as $spieler){
			$gesperrt = "gesperrt_".$spieler->id;
			$angeschlagen = "angeschlagen_".$spieler->id;

			$change = false;
			global $Manager;

			//Update Spieler
			$UpdateSpieler = $Manager->getTable("Spieler")->find($spieler->id);
			if($_POST[$gesperrt] == 'on') {
				$UpdateSpieler->aktiv = '0';
				$change = true;
			}
			if($_POST[$angeschlagen] == 'on') {
				$UpdateSpieler->Status = $Manager->getTable("Status")->find(2);
				$change = true;
			}

			if($change) {
				$UpdateSpieler->save();
				$change = false;
			}

		}

		//Update Ersatzspieler
		foreach($this->getErsatzAufstellung($this->id) as $spieler){
			$gesperrt = "gesperrt_".$spieler->id;
			$angeschlagen = "angeschlagen_".$spieler->id;
			$verletzt = "verletzt_".$spieler->id;

			$change = false;
			global $Manager;

			//Update Spieler
			$UpdateSpieler = $Manager->getTable("Spieler")->find($spieler->id);
			if($_POST[$gesperrt] == 'on') {
				$UpdateSpieler->aktiv = '0';
				$change = true;
			}
			if($_POST[$angeschlagen] == 'on') {
				$UpdateSpieler->Status = $Manager->getTable("Status")->find(2);
				$change = true;
			}
			if($_POST[$verletzt] == 'on') {
				$UpdateSpieler->Status = $Manager->getTable("Status")->find(3);
				$change = true;
			}

			if($change) {
				$UpdateSpieler->save();
				$change = false;
			}
		}
	}

	private function setBewertet() {
		echo "test";
		global $Manager;
		$Spiel = $Manager->getTable("Spiel")->find($this->id);
		$Spiel->bewertet = 1;
		$Spiel->save();
	}

	private function setTore() {
		global $Manager;
		$Spiel = $Manager->getTable("Spiel")->find($this->id);
		$Spiel->eigeneTore = $_POST['eigeneTore'];
		$Spiel->gegnerTore = $_POST['gegnerTore'];
		$Spiel->save();
	}

	private function checkOnError() {
		if($_POST['eigeneTore']=='') {
			$this->failures[] = 'Sie haben keine eigene Tore eingegeben.';
		}
		if($_POST['gegnerTore'] == '') {
			$this->failures[] = 'Sie haben keine gegnerische Tore eingegeben.';
		}

		if(count($this->failures) > 0)
			return true;
		else
			return false;

	}
 }
?>
